package com.casa_apoio.model.dao;

import com.casa_apoio.model.entity.Cidade;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

public class CidadeDAO<T> extends HibernateDAO<T> {

    public CidadeDAO(Class<T> classe, Session session) {
        super(classe, session);
    }

    public List<Cidade> listarCidadeOrdenada() {
        Criterion filtro = Restrictions.eq("ativo", true);
        Criteria criterio = criaCriteria();
        criterio.addOrder(Order.desc("consorcio")).addOrder(Order.asc("uf")).addOrder(Order.asc("cidade")).add(filtro);
        List<Cidade> listarCidadeOrdenada = criterio.list();
        return listarCidadeOrdenada;
    }

    public List<Cidade> listarCidadeTodas() {
        Criteria criterio = criaCriteria();
        criterio.addOrder(Order.asc("cidade"));
        List<Cidade> listarCidadeOrdenada = criterio.list();
        return listarCidadeOrdenada;
    }

    public List<Cidade> verificaCidadeAtiva(String codigo) {
        Criterion filtro = Restrictions.eq("codigo", codigo);
        Criteria criterio = criaCriteria().add(filtro);
        List<Cidade> cidades = criterio.list();
        return cidades;
    }

    public List<Cidade> pesquisarCidades(String value) {
        Criterion filtro = Restrictions.like("cidade", value + "%");
        Criteria criterio = criaCriteria();
        criterio.addOrder(Order.desc("consorcio")).addOrder(Order.asc("uf")).addOrder(Order.asc("cidade")).add(filtro);
        List<Cidade> lista = criterio.list();
        return lista;
    }
}
